/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.itschapala.dsw2.biblioteca8a.BL;

import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.itschapala.dsw2.biblioteca8a.Dao.LibroDaoLocal;
import mx.itschapala.dsw2.biblioteca8a.Enumeracion.EstadoDetallePrestamo;
import mx.itschapala.dsw2.biblioteca8a.Enumeracion.EstadoServicio;
import mx.itschapala.dsw2.biblioteca8a.modelo.Libro;

/**
 *
 * @author Raven
 */
@Stateless
public class LibroBL implements LibroBLLocal {
    @EJB
    private LibroDaoLocal libroDao;
    
    @Override
      public EstadoServicio register(Libro book) {
         if (libroDao.findDuplicity(book)) {
            //no se pudo hacer
            return EstadoServicio.INCOMPLETE;
        } else {
           libroDao.create(book);
            // ya lo hizo
            return EstadoServicio.COMPLETE;

        }
    }
    @Override
        public EstadoServicio modify(Libro book ) {
        if (book.getId() == null || libroDao.find(book.getId()) == null) {
            return EstadoServicio.INCOMPLETE;
        } else {
            libroDao.edit(book);
            return EstadoServicio.COMPLETE;
        }
    }
    @Override
            public EstadoServicio delete(Libro book) {
         if (libroDao.find(book.getId()) == null || book.getId() == null) {

            return EstadoServicio.INCOMPLETE;
        } else {
            libroDao.remove(book);
            return EstadoServicio.COMPLETE;
        }
    }
    @Override
            public List<Libro> getAll() {
        return libroDao.findAll();
    }

    @Override
    public Libro findById(Integer id) {
        return libroDao.find(id);
    }

    @Override
    public Libro findByClaveforLend(String clave) {
        Libro lbusquedad=new Libro();
        lbusquedad.setClave(clave);
        Libro l=libroDao.findByClave(lbusquedad);
        if(l!=null&&l.getEstado().equals(EstadoDetallePrestamo.RETURN.name()))
        {
        return l;
        }
        return null;
    }

    
    

}
